package com.chengdu.chun.po;

import java.util.List;

/**
 * 分页对象处理类
 * @param <T>
 */
public class Page<T> {

    /** 当前页码 */
    private long curpage;
    /** 最大页码 */
    private long maxpage;
    /** 每页显示记录数量 */
    private int number;
    /** 总的数量 */
    private long total;
    /** 当前页需要显示的数据集合 */
    private List<T> datalist;


    /**
     * 构造方法用于判断输入的数据是否合理，并计算最大页码
     *
     * @param curpage 当前页码
     * @param number  每页显示记录数量
     * @param total   总得记录数量
     */
    public Page(long curpage, int number, long total) {
        this.curpage = curpage < 1 ? 1 : curpage;
        this.number = number < 1 ? 1 : number;
        this.total = total < 0 ? 0 : total;

        // 计算最大页码
        this.maxpage = this.total % this.number == 0 ? this.total / this.number : (this.total / this.number + 1);

        // 判断当前页面不能超过最大页码
        if (this.curpage > this.maxpage)
            this.curpage = this.maxpage;
    }

    public long getCurpage() {
        return curpage;
    }

    public void setCurpage(long curpage) {
        this.curpage = curpage;
    }

    public long getMaxpage() {
        return maxpage;
    }

    public void setMaxpage(long maxpage) {
        this.maxpage = maxpage;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long total) {
        this.total = total;
    }

    public List<T> getDatalist() {
        return datalist;
    }

    public void setDatalist(List<T> datalist) {
        this.datalist = datalist;
    }

    @Override
    public String toString() {
        return "Page{" +
                "curpage=" + curpage +
                ", maxpage=" + maxpage +
                ", number=" + number +
                ", total=" + total +
                ", datalist=" + datalist +
                '}';
    }
}
